In the Infrastructure as a service (IaaS) cloud service model, there are three types of resources: physical resources, virtualization facilities and virtual resources. Each of these resources can be upgraded over time for different reasons. The service delivered by the IaaS layer may be affected during the upgrades. Some systems tolerate capacity reduction and outages caused by offline upgrade, in which part of the system is taken out of service for the duration of the upgrade. High availability (HA) systems do not tolerate more than five minutes downtime in a year. More specifically, HA systems provide services that are available 99.999% of time. Availability is a non-functional requirement which determines the percentage of the time a system or a service has to be accessible.
One of the main challenges of maintaining HA in the cloud during upgrades is the dynamicity of the environment. A cloud system is a dynamic environment that scales in and out according to the workload changes. During an upgrade, some services (a.k.a. virtual resources) provided by IaaS may scale out to accommodate increased workload, which consumes extra capacity. While other virtual resources of the system may scale in due to workload decrease. Also, new resources (physical and/or virtual) can be added or removed from the system. This scaling feature of the cloud may interfere and even conflict with the upgrade process.
One solution for the upgrade is to create an entirely new system with upgraded resources. The traffic is redirected to this new system once it is ready for service. However, creating a new system duplicates the resources needed. Thus, this solution is expensive and does not apply in all cases.